package com.xbongbong.pro.priceset.pojo.dto;

import com.xbongbong.paas.domain.entity.ext.ConditionsEntityExt;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.paas.toolbox.wrap.QueryIgnore;
import com.xbongbong.paas.field.LinkInfoPojo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author haibin.zhang
 * @version v1.0
 * @date 2019/1/22 11:13
 * @since v1.0
 */
@Getter
@Setter
@ToString
public class PriceProductListDataDTO extends BaseDTO {
    private static final long serialVersionUID = 6668759504188071884L;
    /**
     * 业务类型
     */
    private Integer businessType;

    /**
     * 表单id,多模板业务必传
     */
    private Long formId;

    /**
     * saas标记
     */
    private Integer saasMark;

    /**
     * 分页当前页
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer page;

    /**
     * 分页每页记录数
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer pageSize;
    /**
     * 选择产品的源业务类型
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer sourceBusinessType;

    /**
     * 用于入库单选择产品（需要将所有仓库信息塞入产品）
     */
    private String instockChoose;
    /**
     * 用于出库选择产品
     */
    private String fromOutstock;
    /**
     * 入/出库类型
     * @see com.xbongbong.saas.enums.InstockTypeEnum
     * @see com.xbongbong.saas.enums.OutstockTypeEnum
     */
    private Integer refType;
    /**
     * 入/出库关联单据id
     */
    private Long refId;
    /**
     * 产品id
     */
    private List<Long> idIn;
    /**
     * 供应商id（关联父产品）
     */
    private Long supplierId;
    /**
     * 产品分类
     */
    private Long categoryId;
    /**
     * 仓库
     */
    private Long warehouseId;
    /**
     * 是否用于出库单、盘点单...等需要产品入过库的单据
     */
    private String isInstock;
    /**
     * 产品编号
     */
    private String productNoLike;
    /**
     * 产品名称
     */
    private String nameLike;
    /**
     * 产品名称或编号搜索项
     */
    private String nameOrNoLike;
    /**
     * 产品名称或编号或规格搜索项
     */
    private String nameOrNoOrSpecLike;
    /**
     * 是否是合同选择产品
     */
    private String isContract;
    /**
     * 产品条码
     */
    private String barcode;
    /**
     * 发起接口请求得字段
     */
    private String attr;
    /**
     * 排序字段{"field":"updateTime","sort":"acs"}
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Map<String,String> sortMap;
    /**
     * 搜索条件，只搜索数据信息
     */
    private List<ConditionsEntityExt> conditions;
    /**
     * 关联属性相关字段
     */
    private LinkInfoPojo linkInfo;
//    /**
//     * 应用id
//     */
//    @NotNull(message = "应用id不能为空")
//    private Long appId;
//    /**
//     * 菜单id
//     */
//    @NotNull(message = "菜单id不能为空")
//    @Getter(onMethod_ = {@QueryIgnore})
//    private Long menuId;
    /**
     * 筛选仓库id
     */
    private List<Object> searchWarehouseIdList;
    /**
     * 原单表单id
     */
    private Long sourceFormId;

    private Set<Long> nameLikeIdIn;
}